package io.renren.common.constants.enums;

import lombok.Getter;

/**
 * @author miaoguoxin
 * @version 1.0.0
 * @describe 请求状态码
 * @date 2019年7月27日
 */

@Getter
public enum ResponseStatus {
    /**请求成功*/
    SUCCESS(1,"成功"),
    /**请求失败*/
    ERROR(5000,"错误"),
    /**请求过多*/
    TOO_MANY_REQUESTS(100,"服务器繁忙，请稍后再试"),
    /**非法参数*/
    ILLEGAL_PARAMS(101,"参数错误"),
    /**token过期*/
    TOKEN_TIMEOUT(102,"登陆过期,请重新登陆"),
    /**时间戳错误*/
    ERROR_TIMESTAMP(103,"时间戳错误"),
    /**签名错误*/
    ERROR_SIGN(104,"签名错误"),
    /**该账号已在其他设备登陆*/
    LOGIN_ON_OTHER_DEVICE(105,"该账号已在其他设备登陆"),

    ILLEGAL_USER_ID(106,"非法的用户id"),

    /**服务异常*/
    SERVER_ERROR(500,"服务异常，程序员哥哥正在努力加班中~~~"),

    USER_IS_REG(10000, "用户已注册"),
    USER_IS_NOT_REG(10001, "用户未注册"),
    USER_CAPTCHA_VALID_FAILED(10002, "验证码不正确，请重新输入"),
    USER_BIND_PHONE(10005, "手机已使用"),
    USER_PHONE_CAPTCHA_TIMEOUT(10006, "手机验证码已过期"),
    USER_LOGIN_ON_OTHER_DEVICE_VALID_PHONE(10007,"账号在其他设备登陆，请通过手机验证码校验"),
    USER_LOGIN_TIMEOUT(10008,"您已很久没登陆过了，请重新验证手机"),
    USER_FACE_NOT_MATCH(10009,"脸部图像不匹配，请重新上传"),
    USER_IS_NOT_EXIST(10010,"用户不存在"),

    /**环信注册异常*/
    OUT_SIDE_IM_REG_ERR(20001,"注册失败，请稍后重试"),
    OUT_SIDE_FACE_REG_ERR(20002,"人脸识别失败，请稍后重试"),
    OUT_SIDE_GET_WECHAT_TOKEN_ERR(20003,"获取微信授权失败，请稍后重试"),
    OUT_SIDE_SEND_CAPTCHA_FAILED(20004,"短信验证码发送失败，请稍后重试"),
    OUT_SIDE_WX_PAY_FAILED(20005,"微信预支付下单失败，请稍后重试"),
    OUT_SIDE_ALI_PAY_FAILED(20006,"支付宝预支付下单失败，请稍后重试"),

    MATCH_RECORD_IS_NOT_EXIST(30000,"匹配记录不存在"),
    MATCH_RECORD_IS_NOT_MYSELF(30001,"这个不是你的匹配记录"),

    FUND_PAY_TYPE_NOT_FOUNT(40001,"没有对应的支付类型"),
    FUND_PAY_BIZ_NOT_FOUNT(40002,"没有对应的支付逻辑"),
    FUND_LOG_NOT_EXIST(40003,"支付流水不存在"),
    FUND_PAY_AMOUNT_NOT_MATCH(40004,"支付金额和流水不匹配"),
    FUND_ALI_APPID_NOT_MATCH(40005,"支付宝appid不一致"),
    FUND_ALI_NOT_PAY(40006,"支付不是完成状态"),
    ;
    /**
     * 编码
     */
    private int value;
    /**描述*/
    private String desc;

    ResponseStatus(int value, String desc) {
        this.value = value;
        this.desc = desc;
    }


    /**
     * 获取枚举
     *
     * @param value
     * @return
     */
    public static ResponseStatus getByValue(int value) {
        for (ResponseStatus e : values()) {
            if (e.getValue() == value) {
                return e;
            }
        }
        return ERROR;
    }

    @Override
    public String toString() {
        return this.value+"";
    }
}
